# -*- coding: utf-8 -*-
import requests
import pandas as pd
import re
import pymongo
from pymongo import MongoClient
#连接MongoDB数据库

#Client=MongoClient()
##打开或者创建名为data的collection，collec相当于关系型数据库中的数据库
##在MongoDB当中，collection是文档的集合
#db=Client.maoyan
#persons=db.persons#建立表格
#
##（得不到数据要手动滑动验证）
#maodata=[]
#伪装浏览器
header = {'User-Agent': 'Chrome/92.0.4515.159 Safari/537.36'}
k=[]#保存循环后的数据（包含10页数据）
#循环页码
for page in range(10):
    #根据规律构造url
    url = 'https://maoyan.com/board/4?offset=0'
    #+str(page*10)
    #请求源代码
    response = requests.get(url, headers=header)
       # 2.从网页源代码挖掘所要数据 --- 正则表达式获取
       #匹配排名和图片电影名字
#    print(response.text)
         
    rt= r'<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>'   
    #    url='
    #再进行匹配主演（只要名字)
    rt1=rt+'.*?主演：(.*?)</p>.*?'
    #再进行匹配上映时间,(只要日期)
    rt2=rt1+' .*?上映时间：(.*?)</p>'
    #再进行匹配时间（整数部分）
    rt3=rt2+'.*?"integer">(.*?)</i>'
    #再进行匹配(得分小数部分)
    rt4=rt3+'.*?"fraction">(.*?)</i>'
    p = re.compile(rt4, re.S)#匹配规则
    data = re.findall(p, response.text)#获取数据，得到list，里面包含tuple类型
    save=[]#列表存储字典
     #循环获取数据
    for it in data:
        data_dict={}#局部字典保存
        data_dict['电影排名']=it[0]
        data_dict['电影名字']=it[2]
        data_dict['主演']=it[3]
        data_dict['上映时间'] =it[4].strip()#去掉两端空格
        data_dict['电影评分'] = it[5] + it[6]#得分
        save.append(data_dict)
#    maodata.append(data_dict)


#保存到mongodb中

#personId1=persons.insert(maodata)
     
#persons.delete_many({'电影名字':{'$gt':0}})

       

#        save1=pd.DataFrame(save)#转化为数据框
#    k.append(save1)#得到整个榜单数据
    #4.保存数据
#    save_data=pd.concat(k)#将数据合并
#    save_data.index=range(save_data.shape[0])#重置索引
